Content-Security-Policy (CSP)
Content-Security-Policy ist ein Sicherheitsfeature, welches Webdesigner und Serveradministratoren einsetzen können, um Angriffe durch z.B. Cross-Site-Scripting (XSS) zu verhindern.
CSP ist ein Sicherheitsheader, über den vertrauenswürdige Domains festgelegt werden können. Für jede Domain kann konfiguriert werden, welche Ressourcen sie laden dürfen. Ressourcen können u.A. Stylesheets, Javascripte, iFrames, Schriften oder Bilder sein.
Ein Beispiel für einen einfachen CSP-Header:
Content-Security-Policy: default-src 'self' example.com
Dieser CSP-Header spezifiziert, dass der Browser Ressourcen nur von den beiden folgenden Domains nachladen darf:
- 'self': Die Domain, unter der die Seite aktuell läuft
- example.com: Es dürfen Ressourcen auch von example.com nachgeladen werden.
Über 'default-src' wird das Verhalten für alle möglichen Quellen festgelegt. Es ist aber durchaus möglich, unterschiedliche Regeln für das Laden von Bilder, Stylesheets, Schriften oder Scriptfiles festzulegen:
Erlaube das Nachladen von Scripten von jeder Subdomain von somecdn.com sowie der eigenen Domain (_self), erlaube inline Scripte (Scripte in <script> Tags innerhalb des HTML-DOM und erlaube Scripten den Aufruf von eval() )
Content-Security-Policy: script-src 'self' 'unsafe-eval' 'unsafe-inline' *.somecdn.com;
Erlaube das Nachladen von Bildern von jeder Subdomain von ytimg.com sowie der eigenen Seite:
Content-Security-Policy: img-src 'self' *.ytimg.com;
Erlaube iFrames von den Domains cookiebot.com, youtube-nokookie.com und fonts.gstatic.com
Content-Security-Policy: frame-src 'self' *.cookiebot.com *.youtube-nocookie.com fonts.gstatic.com;
Es ist möglich, unterschiedliche Policies für einzelne Quellen zu hinterlegen:
Content-Security-Policy: frame-src 'self' somedomain.com; script-src 'self' someotherdomain.com; font-src fonts.gstatic.com;
Apache und nginx unterscheiden sich leicht in der Syntax, aber das Prinzip ist identisch.